home *** CD-ROM | disk | FTP | other *** search
- Version 2.10 (Änderungen gegenüber V2.00):
- - neue Beispiel-Programme zur Demonstration der Fenster-Routinen
- (u.a. Resource-Previewer, Clipboard-Viewer, XClipboard, Datei-Viewer)
- - Light-Version der Library durch Definition des Makros 'SMALL_EGEM'
- - Definition des View-Protokolls integriert
- - neue Funktionen:
- void SetDragDrop(int any_extension,char *exts)
- -> gewünschte/bevorzugte Dateierweiterungen für das Drag&Drop-
- Protokoll festlegen (s. Anleitung)
- int SendDragDrop(int msx,int msy,int kstate,char *name,
- char *ext,long size,char *data)
- -> Daten per Drag&Drop-Protokoll an die Applikation senden,
- der das Fenster unter dem Mauszeiger gehört (s. Anleitung)
- void ob_setstate(OBJECT *tree,int object,int state);
- void ob_setflags(OBJECT *tree,int object,int flags);
- -> Objektflags/-status eines Objekts setzen
- void ob_select(DIAINFO *info,OBJECT *tree,int obj,int sel,int draw)
- -> Objekt 'obj' im Baum 'tree' in Abhängigkeit vom Parameter
- 'select' (de-) selektieren und evtl. neuzeichnen (draw!=0).
- void ob_disable(DIAINFO *info,OBJECT *tree,int obj,int dis,int draw)
- -> Objekt 'obj' im Baum 'tree' in Abhängigkeit vom Parameter
- 'dis' dis-/enablen und evtl. neuzeichnen (draw!=0).
- int ob_draw(DIAINFO *info,int object)
- -> Objekt 'object' des Dialogs 'info' darstellen (verkürzter
- Aufruf von ob_draw_chg(info,object,NULL,FAIL,FALSE))
- void ob_clear_edit(OBJECT *tree)
- -> Text in allen Eingabefeldern des Baums 'tree' löschen
- void menu_item_enable(int object,int enable)
- -> Menü-Eintrag 'object' aktivieren (enable!=0) oder
- deaktivieren (enable==0)
- void menu_select(int title,int select)
- -> Menü-Titel 'title' normal (select==0) oder invers
- (select!=0) darstellen
- void close_all_dialogs(void)
- -> alle geöffneten Dialoge schließen
- void close_all_windows(void)
- -> Alle geöffneten Fenster schließen. Sind vorher noch Dialoge
- geöffnet, so werden diese ebenfalls geschlossen.
- WIN *get_top_window(void)
- -> WIN-Struktur zum obersten Fenster ermitteln
- void window_name(WIN *win,char *title,char *icon_title)
- -> Titel des Fensters 'win' setzen
- -> title: Zeiger auf Fenstertitel oder NULL
- icon_title: Zeiger auf Fenstertitel im ikonifizierten Zu-
- stand oder NULL
- void window_info(WIN *win,char *info)
- -> Info-Zeile des Fensters 'win' auf 'info' setzen
- int window_first(WIN *win,GRECT *rect);
- int window_next(WIN *win,GRECT *rect);
- -> Verkürzte Aufrufe von wind_xget(handle,WF_FIRSTXYWH,...)
- bzw. wind_xget(handle,WF_NEXTXYWH,...)
- void window_top(WIN *win)
- -> Fenster 'win' nach oben bringen
- void window_bottom(WIN *win)
- -> Fenster 'win' nach unten legen
- WIN *window_find(int x,int y)
- -> WIN-Struktur des Fensters an den Koordinaten (x,y)
- ermitteln
- void window_slider(WIN *win,int vh,int pos,int size)
- -> Position (pos) und Größe (size) des vertikalen
- (vh==VERT_SLIDER) oder horizontalen (vh==HOR_SLIDER)
- Sliders des Fensters 'win' setzen
- void window_size(WIN *win,GRECT *size)
- -> Ausmaße des Fensters 'win' auf 'size' setzen
- void window_calc(int wctype,int kind,GRECT *in,GRECT *out)
- -> Entspricht von der Funktionalität der AES-Funktion
- wind_calc(), nur daß anstatt einzelner Parameter Zeiger
- auf GRECT-Strukturen erwartet werden
- void window_border(int kind,int x,int y,int w,int h,GRECT *out)
- -> Koordinaten des Randbereichs (WC_BORDER) aus der linken,
- oberen Ecke (x,y) des Fensters und der Breite/Höhe des
- Arbeitsbereiches (w,h) berechnen
- void scroll_window(WIN *win,int mode,GRECT *area)
- -> Bereich 'area' des Fensters 'win' in Abhängigkeit vom Para-
- meter 'mode' (LINE_START,LINE_END,WIN_START,WIN_END,
- WIN_SCROLL,PAGE_LEFT,PAGE_UP,PAGE_RIGHT,PAGE_DOWN,LINE_LEFT,
- LINE_UP,LINE_RIGHT,LINE_DOWN) scrollen
- void window_reinit(WIN *win,char *title,char *icon_title,
- char *info,int home)
- -> Fenster 'win' reinitialisieren und neuzeichnen. U.a.
- wird gegebenenfalls die SCROLL-Struktur auf gültige
- Werte gesetzt und die Größe des Fensters an die maximalen
- bzw. minimalen Ausmaße angepaßt.
- -> Parameter: (s.a. open_window())
- home: Scroll-Position in linke obere Ecke (home!=0)
- void window_set_mouse(WIN *win,int in,int out,
- MFORM *in_form,MFORM *out_form)
- -> Form des Mauszeigers innerhalb und außerhalb des Arbeits-
- bereiches des Fensters 'win' festlegen und setzen.
- void window_mouse(WIN *win)
- -> Mauszeiger des Fensters 'win' entsprechend den durch
- window_set_mouse() getroffenen Einstellungen setzen
- int rc_sc_save(GRECT *area,RC_RECT *rc)
- -> Bildschirmbereich 'area' in Rechteck-Struktur 'rc' sichern
- (RC_RECT-Struktur und Rückgabewerte s. Anleitung)
- int rc_sc_freshen(int sx,int sy,RC_RECT *rc)
- -> Rechteck-Struktur 'rc' erneuern, d.h. Bildschirmbereich
- an den Koordinaten (sx,sy) in Puffer kopieren (s. Anleitung)
- int rc_sc_restore(int dx,int dy,RC_RECT *rc,int mode)
- -> Rechteck-Struktur 'rc' freigeben und/oder an Position
- (dx,dy) zurückkopieren (s. Anleitung)
- int rc_sc_scroll(GRECT *in_out,int dist_x,int dist_y,GRECT *out2)
- -> Rechteck 'in_out' um Distanz (dist_x,dist_y) verschieben
- und neuzuzeichnende Rechtecke in 'in_out' und 'out2'
- zurückgeben.
- -> Rückgabewert: Anzahl der neuzuzeichnenden Rechtecke
- int scrp_path(char *path,char *file)
- -> vollständigen Zugriffspfad der Clipboard-Datei 'file'
- (sofern file!=NULL) ermitteln (s. Anleitung)
- char LowerChar(char ch)
- char UpperChar(char ch)
- -> Zeichen 'ch' in Klein-/Großbuchstaben umwandeln, wobei
- auch Umlaute beachtet werden
- void *GetMsgBuffer(long size)
- -> globalen Speicher (u.a. für XAcc-2/AV-Kommunikation) der
- Größe 'size' anfordern
- void drive_changed(int drive)
- -> Inhalt des Laufwerks 'drive' (0=A,1=B,2=C,...,-1=alle Lauf-
- werke) wurde verändert
- (SH_WDRAW-Nachricht wird an alle Applikationen gesendet)
- char *GetFilename(char *path)
- -> Zeiger auf Dateiname des Pfades 'path' ermitteln. Enthält
- der Pfad keinen Dateinamen, so zeigt der Rückgabewert auf
- das Ende (Nullbyte) des Pfades
- char *GetExtension(char *path)
- -> Zeiger auf Erweiterungs des Dateinamens des Pfades 'path'
- ermitteln. Enthält der Pfad keinen Dateinamen oder keine
- Erweiterung, so zeigt der Rückgabewert auf das Ende
- (Nullbyte) des Pfades
- char *GetPath(char *path)
- -> Dateiname des Pfades 'path' wird entfernt und ein Zeiger
- auf das Ende des Pfades (Nullbyte) zurückgegeben
- int GetDrive(char *path)
- -> Laufwerk des Pfades 'path' ermitteln (0=A,1=B,2=C,...)
- void MakeFullpath(char *dest,char *path,char *file)
- -> kompletten Pfadnamen aus Pfad 'path' (sofern path!=NULL,
- wobei der Pfad keinen abschließenden Backslash enthalten
- muß) und Datei 'file' erstellen und im String 'dest' zurück-
- geben. Wird für den Pfad 'path' NULL übergeben, so muß
- sich der Pfad bereits in 'dest' befinden!
- int FileSelect(char *title,char *path,char *fname,char *sel,
- int no_insel)
- -> Dateiselector aufrufen, wobei diese Funktion automatisch
- erkennt, ob ein erweiterter Fileselector vorliegt (Para-
- meter und Rückgabewerte s. Anleitung)
- void MouseOn(void);
- void MouseOff(void);
- -> Mauszeiger an/-ausschalten. Diese Funktionen merken sich
- intern, ob der Mauszeiger bereits an- oder ausgeschaltet ist
- void MouseArrow(void);
- void MouseCursor(void);
- void MouseBee(void);
- void MouseHourGlass(void);
- void MousePointHand(void);
- void MouseFlatHand(void);
- void MouseThinCross(void);
- void MouseThickCross(void);
- void MouseOutlineCross(void);
- -> Mausform einstellen
- int sl_key(int scan,int ascii)
- -> Aus Scan-Code 'scan' und ASCII-Code 'ascii' Tastencode
- für SLKEY-Struktur berechnen
- - neue Parameter:
- int get_dialog_info(int *,int *,int *wins,DIAINFO **)
- -> Anzahl der offenen Fenster, sofern wins!=NULL
- int xdialog(OBJECT *,char *,char *icon_title,OBJECT *icon,...)
- boolean open_dialog(OBJECT *,DIAINFO *,char *,
- char *icon_title,OBJECT *icon,...)
- WIN *open_window(char *,char *icon_title,char *,char *info,
- OBJECT *icon,int,int,int min_w,int min_h,
- GRECT *max,GRECT *curr,SCROLL *scroll,
- void (*redraw)(WIN *,GRECT *))
- -> icon_title: Fenstername im ikonifizierten Zustand oder NULL
- info: Zeiger auf Infozeile oder NULL
- icon: Zeiger auf Objektbaum, der für die ikonifizierte
- Darstellung benutzt wird, oder NULL
- min_w: minimale Fensterbreite
- min_h: minimale Fensterhöhe
- max: maximale Fensterausmaße
- curr: Fensterausmaße
- scroll: Zeiger auf initialisierte SCROLL-Struktur für
- automatisches Scrolling oder NULL
- redraw: Routine, die den Fenster-Redraw übernimmt
- oder NULL
- void redraw_window(WIN *win,GRECT *area)
- -> Löst einen Redraw über das Rechteck 'area' des
- Fensters 'win' aus
- int xalert(int,int,int,BITBLK *,int modal,...)
- -> System-/Applikations-modale Alert-Box
- void dial_colors(int,int,int,int,int,int,int,int alert_icon)
- -> Farbe des Alert-Icons (0-15)
- void exit_gem(int status)
- void close_rsc(int status)
- -> beide Funktionen melden jetzt zusätzlich die Menüleiste ab
- und beenden das Programm mit dem Rückgabewert 'status'
- - geänderte Parameter:
- boolean menu_dropped(void)
- void menu_enable(boolean enable,boolean show)
- -> Zeiger auf Menüleiste muß nicht mehr übergeben werden
- void menu_enable(boolean enable);
- -> Menüleiste wird jetzt immer nach der Änderung neuge-
- zeichnet
- int scrp_find(char *extensions,char *);
- -> Scrap-Directory (Clipboard) nach Scrap-Datei mit einer
- der durch Komma, Punkt oder Leerzeichen getrennten
- Erweiterungen 'extensions' (z.B. "img.txt.asc.ps")
- durchsuchen
- -> Rückgabewerte s. Anleitung
- - neue globale Variablen:
- int search: appl_search()-Funktion vorhanden
- int colors_available; Anzahl der Farbabstufungen
- - neue Fensterdialog-Elemente (müssen von der Anwendung gesetzt und
- ausgewertet werden) (Parameter 'mode' bei open_dialog() usw.):
- #define WD_HSLIDER 256 /* hor. Slider, Pfeile links/rechts */
- #define WD_VSLIDER 512 /* vert. Slider, Pfeile hoch/runter */
- #define WD_SIZER 1024 /* Sizer */
- #define WD_FULLER 2048 /* Fuller */
- #define WD_INFO 4096 /* Info-Zeile */
- /* Größe bei WM_FULLED/WM_SIZED automatisch anpassen und Nachricht
- OBJC_SIZED (s. Anleitung) versenden (ansonsten darf die Dialog-
- größe nicht geändert werden!) */
- #define WD_SET_SIZE 8182
- - Unterstützung der verschiedenen Drag&Drop-Varianten (neue Struktur
- DRAG_DROP und neue Nachricht OBJC_DRAGGED)
- - Funktion scrp_changed() (an offizielle Version des Clipboard-Proto-
- kolls angepaßt) verschickt jetzt zusätzlich zur SC_CHANGED- eine
- AV_PATH_UPDATE-Nachricht an den AV-Server
- - scrp_clear() verschickt keine SC_CHANGED-Nachricht mehr
- - bis zu 16 Zeilen Text in Alertboxen und Text optional mit Attributen
- - DEFAULT-Button kann jetzt auch Help- oder Undo-Button sein
- - XAcc-Struktur erweitert (av_msgs,va_msgs, s. Anleitung)
- - Fenster-Struktur 'WIN' stark erweitert sowie neue Struktur 'SCROLL'
- für automatisches Scrolling (s. Anleitung)
- - Fenstername, -info und -slider werden nach dem ICFS-Deikonifizieren
- auf ihre vorherigen Werte gesetzt
- - vollautomatische Verwaltung von Fenstern im ikonifizierten Zustand
- -> Funktion 'redraw_iconified' entfernt
- - Fenster können mit Ctrl-Space ikonifiziert werden, wobei durch eine
- zusätzlich gedrückte Shift-Taste alle Fenster ikonifiziert werden
- - Fenster-Fuller kann durch Ctrl-'*' (Ziffernblock) angewählt werden
- - ICFS-kompatible Ikonifizierung, falls weder ICFS noch MTOS-Iconify
- vorhanden sind (dank Dirk Haun @ WI2)
- - evtl. noch geöffnete Fenster werden am Programmende geschlossen
- - Ist das oberste Fenster ein Dialog und besitzt dieser ein Eingabefeld,
- so werden per ACC_TEXT-empfangene Texte in diesem Eingabefeld ein-
- gefügt
- - TriState-Checkboxen (Checkboxen mit TOUCHEXIT-Flag)
- - beliebige GDOS-Fonts/-Größen sowie VDI-Schreibmodi bei Attribut-Text
- - nicht-proportionale GDOS-Fonts in Eingabefeldern, sofern dies vom AES
- unterstützt wird
- - alle Eingabefelder eines Dialogs durch Shift-Esc löschen
- - Enthält die Eingabemaske eines der Zeichen ',.;:\/' und wird dieses
- Zeichen eingegeben, wenn der Cursor VOR diesem Zeichen steht, so wird
- das Eingabefeld bis zu diesem Zeichen mit Leerzeichen gefüllt und der
- Cursor hinter dieses Zeichen gesetzt
- - Event-Handling (Timer,Messsages) und Echtzeitschieber "geringfügig"
- optimiert sowie Pufferung von Fensternachrichten bei geöffneten
- systemmodalen Dialogen oder Popups, 4 Timer-Events (MU_TIMER1-4)
- - globale Variablen 'menu' (Menüleisten müssen jetzt immer mit
- menu_install() an-/abgemeldet werden) und 'redraw' entfernt
- - beim Schließen von Fenster wurden sich vergrößernde anstatt sich ver-
- kleinernde Rechtecke gezeichnet
- - Rückgabewert von init_gem() bzw. open_rsc() war u.a. fehlerhaft,
- wenn keine Xacc/AV-Programmnamen übergeben wurden
- - bei der Terminierung des Programms (exit_gem() bzw. close_rsc())
- wird jetzt beachtet, ob das Programm als Accessory geladen wurde
- und ob vorher eine erfolgreiche Initialisierung stattgefunden hat
- - teilweise Redraw-Fehler bei Text-Eingabe in Hintergrundfenstern
- - unter MultiTasking wird jetzt beachtet, welcher Applikation die
- Menüleiste gehört, um eine unnötige Prozeßumschaltung zu verhindern
- - Makro-Definition der wichtigsten Scan-Codes in Header-File integriert
- - Nachricht WIN_SCROLLED wird an Applikation geschickt, wenn
- die Scrollposition eines Fensters verändert wurde
- - AP_TERM wurde im Beispielprogramm nicht korrekt ausgewertet
- - die Funktion XaccBroadCast nutzt jetzt eine evtl. vorhandene
- AES-Broadcast-Funktion (shel_write(7,...)
- - EGEM-Programme laufen jetzt immer in der MiNT-Domain (vorher nur
- bei Verwendung der MiNT-Library)
- - Anleitung korrigiert und erweitert
- - wurde bei rsrc_calc() bzw. rsrc_init() die Entwurfsfontgröße angegeben,
- so hatte die Menüleiste u.a. bei anderen Systemfonts als 16x8 eine
- zu kleine Höhe
- - die Pure-C-Rechteck-Assemblerroutinen funktionierten nicht bei neg.
- Koordinaten
- - kleinere Probleme mit GNU-C/Lattice-C von Markus Kilbinger beseitigt
- (u.a. Implementation der appl_search()-Funktion)
- - kleinere Fehler in den Xacc2/AV-Protokollen sowie der Ereignis-
- auswertung behoben
- - Fenster von applikationsmodalen Alertboxen werden nicht mehr beim
- AV-Server angemeldet
- - Wurde mit einem Button-Event auf das Drücken und mit dem anderen
- Button-Event auf das Loslassen einer Maustaste gewartet, so gab es
- eine Endlosschleife
- - Nachricht OBJC_CHANGED wurde bei Slidern und Radiobuttons nicht ver-
- schickt
- - Funktion 'scrp_init' entfernt (wird nur noch intern ausgeführt)
- - Variable 'colors' enthielt Anzahl der Farbabstufungen der Farb-
- palette und nicht die Anzahl der darstellbaren Farben
- - Variablen 'max_w' sowie 'max_h' enthielten um einen Pixel zu kleine
- Bildschirmbreite/-höhe